@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#15223b;--muted:#68758b;--brand:#315ee8;--brand-dark:#2347bc;--line:#e3e8f1;--soft:#f5f7fc;--white:#fff;--green:#16866b;--shadow:0 18px 45px rgba(29,47,88,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:'DM Sans',sans-serif;color:var(--ink);background:#fff;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.container{width:min(1120px,calc(100% - 40px));margin-inline:auto}.site-header{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px max(24px,calc((100vw - 1120px)/2));border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);position:sticky;top:0;z-index:10}.brand{font-family:Manrope,sans-serif;font-weight:800;font-size:1.65rem;letter-spacing:-1px;white-space:nowrap}.brand span{color:var(--brand)}.main-nav,.header-actions{display:flex;align-items:center;gap:23px}.main-nav a,.login-link{font-size:.92rem;color:#59667c;transition:color .2s}.main-nav a:hover,.main-nav a.active,.login-link:hover{color:var(--brand)}.header-actions{gap:18px}.button{display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--brand);background:var(--brand);color:white;padding:12px 20px;border-radius:9px;font-weight:700;font-size:.93rem;cursor:pointer;transition:transform .2s,background .2s}.button:hover{background:var(--brand-dark);transform:translateY(-1px)}.button-small{padding:9px 14px;font-size:.86rem}.button-outline{background:transparent;color:var(--brand)}.button-outline:hover{color:white}.button-light{background:white;border-color:white;color:var(--brand)}.button-light:hover{background:#edf1ff;color:var(--brand-dark)}.button-full{width:100%}.menu-toggle{display:none;background:white;border:1px solid var(--line);padding:7px 10px;border-radius:7px;color:var(--ink)}
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center;padding-top:82px;padding-bottom:82px}.eyebrow{text-transform:uppercase;letter-spacing:1.7px;font-size:.73rem;font-weight:700;color:var(--brand);margin:0 0 12px}.hero h1,.page-intro h1,.profile-hero h1{font-family:Manrope,sans-serif;font-size:clamp(2.5rem,5vw,4.3rem);line-height:1.12;letter-spacing:-2px;margin:0 0 22px;font-weight:800}.hero h1 span{color:var(--brand)}.hero-text{font-size:1.1rem;max-width:570px;color:var(--muted);line-height:1.8}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin:27px 0 18px}.small-note,.demo-note,.tiny-note{font-size:.8rem;color:#8a95a8}.hero-panel{border:1px solid #e3e9f6;border-radius:22px;padding:30px;background:linear-gradient(145deg,#f7f9ff,#fff);box-shadow:var(--shadow);position:relative;overflow:hidden}.hero-panel:after{content:"";position:absolute;width:190px;height:190px;border-radius:50%;background:#e7edff;right:-85px;top:-95px;z-index:0}.panel-top,.hero-panel h2,.hero-panel>p,.mini-stat-grid,.panel-footer{position:relative;z-index:1}.panel-top{font-size:.82rem;font-weight:700;color:var(--muted);display:flex;align-items:center;gap:9px}.status-dot{height:8px;width:8px;border-radius:50%;background:#1ca67d}.hero-panel h2{font:800 1.8rem Manrope,sans-serif;line-height:1.25;margin:24px 0 8px}.hero-panel>p{color:var(--muted);margin:0}.mini-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:27px}.mini-stat-grid div{background:white;border:1px solid var(--line);border-radius:12px;padding:15px}.mini-stat-grid strong,.mini-stat-grid span{display:block}.mini-stat-grid strong{font-size:.95rem}.mini-stat-grid span{font-size:.8rem;color:var(--muted);margin-top:3px}.panel-footer{border-top:1px solid var(--line);margin-top:22px;padding-top:16px;font-size:.83rem;color:var(--brand);font-weight:700}
.section{padding-top:35px;padding-bottom:80px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:25px}.section-heading h2,.split-section h2,.compact-section h2{font:800 clamp(1.7rem,3vw,2.4rem)/1.2 Manrope,sans-serif;letter-spacing:-.8px;margin:0}.text-link{color:var(--brand);font-weight:700;font-size:.9rem}.text-link:hover{text-decoration:underline}.card-grid{display:grid;gap:18px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.project-card,.student-card,.content-card{border:1px solid var(--line);border-radius:15px;background:white;padding:22px;transition:box-shadow .2s,border-color .2s}.project-card:hover,.student-card:hover,.content-card:hover{box-shadow:var(--shadow);border-color:#cdd7f7}.card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tag{background:#edf1ff;color:var(--brand);padding:5px 9px;border-radius:6px;font-size:.72rem;font-weight:700}.project-state{font-size:.72rem;color:var(--green);font-weight:700}.project-card h3,.student-card h3{font:700 1.15rem Manrope,sans-serif;margin:18px 0 8px}.project-card p,.student-card p,.content-card p{color:var(--muted);font-size:.9rem;margin:0 0 16px}.tag-row{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0}.tag-row span,.role-pills span{font-size:.73rem;color:#58657b;background:#f3f5f9;padding:5px 8px;border-radius:6px}.card-bottom{border-top:1px solid var(--line);padding-top:14px;margin-top:18px;display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:.79rem;color:var(--muted)}.card-bottom a{color:var(--brand);font-weight:700}.demo-note{margin-top:20px}.section-soft{background:var(--soft);padding:70px 0}.split-section{display:grid;grid-template-columns:.9fr 1.1fr;gap:65px;align-items:center}.split-section h2{margin-bottom:15px}.section-text{color:var(--muted);max-width:510px;margin-bottom:24px}.feature-list{display:grid;gap:12px}.feature-item{display:flex;gap:17px;background:white;border:1px solid var(--line);padding:18px;border-radius:12px}.feature-number{font:800 1.2rem Manrope,sans-serif;color:var(--brand)}.feature-item h3{margin:0 0 4px;font-size:1rem}.feature-item p{margin:0;color:var(--muted);font-size:.88rem}.cta-section{margin-top:75px;margin-bottom:75px;border-radius:20px;background:var(--brand);color:white;text-align:center;padding:55px 25px}.cta-section .eyebrow{color:#d8e1ff}.cta-section h2{font:800 clamp(1.8rem,4vw,2.7rem)/1.2 Manrope,sans-serif;margin:0 0 12px}.cta-section p:not(.eyebrow){color:#e0e7ff;max-width:600px;margin:0 auto 25px}.site-footer{border-top:1px solid var(--line);padding:28px 0}.footer-inner{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.footer-inner p{color:var(--muted);font-size:.84rem;margin:0 auto 0 0}.footer-links{display:flex;gap:16px;font-size:.82rem;color:var(--muted)}.footer-inner small{width:100%;font-size:.75rem;color:#8a95a8}
.page-main{padding-top:54px;padding-bottom:75px}.page-intro{max-width:720px;margin-bottom:32px}.page-intro h1{font-size:clamp(2.2rem,4vw,3.5rem);margin-bottom:13px}.page-intro>p:last-child{font-size:1.03rem;color:var(--muted);max-width:650px;margin:0}.filter-bar{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;padding:18px;background:var(--soft);border:1px solid var(--line);border-radius:13px;margin-bottom:24px}.filter-bar label,.auth-card label{display:flex;flex-direction:column;gap:7px;font-size:.8rem;font-weight:700;color:#526078}.filter-bar input,.filter-bar select,.auth-card input,.auth-card select{width:100%;border:1px solid #dce2ed;background:white;border-radius:8px;padding:12px;color:var(--ink);outline:none}.filter-bar input:focus,.filter-bar select:focus,.auth-card input:focus,.auth-card select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #315ee81a}.empty-state{grid-column:1/-1;text-align:center;padding:30px;color:var(--muted)}.center-action{text-align:center;margin-top:28px}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:35px;align-items:start}.back-link{display:inline-block;color:var(--brand);font-size:.88rem;font-weight:700;margin-bottom:20px}.detail-heading{padding-bottom:25px;border-bottom:1px solid var(--line)}.detail-heading h1{font:800 clamp(2.2rem,4vw,3.2rem)/1.15 Manrope,sans-serif;letter-spacing:-1.5px;margin:16px 0}.lead{font-size:1.06rem;color:var(--muted);line-height:1.75}.content-section{padding:25px 0;border-bottom:1px solid var(--line)}.content-section h2{font:800 1.35rem Manrope,sans-serif;margin:0 0 12px}.content-section p{color:var(--muted)}.clean-list{padding-left:20px;color:var(--muted)}.clean-list li{margin:8px 0}.role-list{display:grid;gap:10px}.role-list div{border:1px solid var(--line);border-radius:10px;padding:13px}.role-list strong,.role-list span{display:block}.role-list span{color:var(--muted);font-size:.86rem;margin-top:4px}.detail-sidebar{display:grid;gap:15px;position:sticky;top:100px}.side-card{border:1px solid var(--line);border-radius:14px;padding:20px;background:white}.side-card h3{font:700 1.1rem Manrope,sans-serif;margin:0 0 8px}.side-card p{font-size:.86rem}.muted,.tiny-note{color:var(--muted)}.tiny-note{font-size:.75rem;line-height:1.5}.info-row{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.8rem}.info-row:last-child{border-bottom:0}.info-row span{color:var(--muted)}.student-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.student-card{text-align:left}.avatar{width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:#e8edff;color:var(--brand);font:800 1.1rem Manrope,sans-serif}.avatar-alt{background:#e4f5ee;color:#16866b}.avatar-third{background:#fff0df;color:#9b5b16}.avatar-fourth{background:#f4e8ff;color:#8746b6}.student-role{color:var(--brand)!important;font-weight:700;margin-bottom:9px!important}.student-card .tag-row{min-height:54px}.student-card .button{font-size:.82rem;padding:10px}.profile-hero{display:grid;grid-template-columns:100px 1fr;gap:25px;align-items:start;background:var(--soft);padding:32px;border-radius:18px;margin:15px 0 30px}.avatar-large{width:90px;height:90px;font-size:1.6rem;border-radius:22px}.profile-hero h1{font-size:2.8rem;margin:0 0 5px}.profile-hero .lead{margin:0 0 8px}.profile-hero p:not(.eyebrow):not(.lead){color:var(--muted);max-width:700px}.profile-columns{display:grid;grid-template-columns:1.3fr .7fr;gap:25px}.large-tags span{font-size:.86rem;padding:8px 12px}.spaced-heading{margin-top:28px!important}.notice-box{padding:20px 22px;border:1px solid #d7e1ff;background:#f6f8ff;border-radius:12px;margin-bottom:25px}.notice-box strong{font:700 1rem Manrope,sans-serif}.notice-box p{color:var(--muted);margin-bottom:0}.role-pills{display:flex;flex-wrap:wrap;gap:7px;margin:17px 0 20px}.compact-section{padding-top:45px;padding-bottom:20px}.compact-section h2{margin-bottom:12px}.community-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:25px}.community-grid .content-card{padding:25px}.community-grid h2{font:800 1.2rem Manrope,sans-serif;margin:0 0 12px}.status-label{font-size:.75rem;color:#94651c;background:#fff3d9;border-radius:6px;padding:5px 8px;height:max-content}.status-success{background:#e5f7ef;color:var(--green)}.dashboard-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:22px}.stat-card{border:1px solid var(--line);border-radius:13px;padding:20px}.stat-card span,.stat-card strong{display:block}.stat-card span{font-size:.84rem;color:var(--muted)}.stat-card strong{font:800 2rem Manrope,sans-serif;margin-top:5px}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.dashboard-columns h2{font:800 1.25rem Manrope,sans-serif;margin:0 0 17px}.dashboard-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--line);margin-bottom:8px}.dashboard-row strong{font-size:.9rem}.dashboard-row p{font-size:.8rem;color:var(--muted);margin:3px 0 0}
.auth-page{min-height:100vh;background:var(--soft)}.auth-page .site-header{position:static;padding-inline:max(24px,calc((100vw - 1120px)/2))}.auth-wrap{width:min(480px,calc(100% - 32px));margin:50px auto 70px}.auth-card{background:white;border:1px solid var(--line);box-shadow:var(--shadow);padding:32px;border-radius:17px}.auth-card h1{font:800 2rem/1.2 Manrope,sans-serif;letter-spacing:-.7px;margin:0 0 10px}.auth-card>.muted{margin-bottom:25px}.auth-card label{margin:16px 0}.auth-card .button{margin-top:8px}.form-message{font-size:.85rem;color:var(--green);min-height:20px}.auth-switch{text-align:center;color:var(--muted);font-size:.85rem}.auth-switch a{color:var(--brand);font-weight:700}
@media(max-width:1000px){.site-header{gap:14px}.main-nav{gap:13px}.main-nav a{font-size:.83rem}.hero{gap:35px}.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid .project-card:last-child{grid-column:auto}}
@media(max-width:760px){.site-header{min-height:70px;flex-wrap:wrap;padding:12px 20px}.menu-toggle{display:block;margin-left:auto}.main-nav{display:none;order:4;width:100%;flex-direction:column;align-items:stretch;gap:0;padding:8px 0}.main-nav.open{display:flex}.main-nav a{padding:10px 4px;border-top:1px solid var(--line)}.header-actions{gap:12px}.header-actions .login-link{display:none}.header-actions .button{padding:8px 10px;font-size:.8rem}.hero{grid-template-columns:1fr;padding-top:55px;padding-bottom:55px;gap:32px}.hero h1{font-size:clamp(2.45rem,11vw,3.7rem)}.section{padding-bottom:55px}.section-heading{align-items:start;flex-direction:column}.project-grid,.community-grid{grid-template-columns:1fr}.split-section{grid-template-columns:1fr;gap:30px}.cta-section{margin-top:45px;margin-bottom:45px}.footer-inner{gap:12px}.footer-inner p{width:100%;order:3}.footer-links{width:100%;order:4}.footer-inner small{order:5}.page-main{padding-top:38px}.filter-bar{grid-template-columns:1fr}.detail-layout{grid-template-columns:1fr}.detail-sidebar{position:static;grid-row:1}.detail-content{grid-row:2}.student-grid{grid-template-columns:1fr}.profile-hero{grid-template-columns:1fr;padding:23px}.profile-columns,.dashboard-columns{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:1fr}.dashboard-stats .stat-card{padding:14px}.dashboard-stats .stat-card strong{font-size:1.5rem}.auth-wrap{margin-top:30px}.auth-card{padding:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}